package demo04;

public class Test {
    static Student[] arr = new Student[5];

    public static void main(String[] args) {
        // 提示用户键盘录入5个学生的信息, 并将这些信息封装成学生对象后, 存储到数组中.
        getStudnetsArray();
        //需求1: 打印所有学生的信息, 格式为:
        //姓名为张三的同学, 语文成绩为100分, 数学成绩为100分, 英语成绩为100分.
        printStudentInfo();

        //需求2: 打印每个学生的总分, 格式为:
        //姓名为张三的同学, 总分为: 300分
        printAllStudentGrade();

        //需求3: 打印分数最高的学生信息, 格式如下:
        //分数最高的学生是张三, 总分为300分, 其中语文成绩为100分, 数学成绩为100分, 英语成绩为100分.
        printMaxGradeStudnetInfo();
    }

    public static void printMaxGradeStudnetInfo() {
        Student maxGradeStudent = getMaxGradeStudent();
        System.out.println("分数最高的学生是" + maxGradeStudent.getName() + ", 总分为" + maxGradeStudent.getAllGradeSum() +
                "分, 其中语文成绩为" + maxGradeStudent.getChineseGrade() +
                "分, 数学成绩为" + maxGradeStudent.getMathGrade() +
                "分, 英语成绩为" + maxGradeStudent.getEnglishGrade() + "分.");
    }

    public static Student getMaxGradeStudent() {
        Student maxGradeStudent = arr[0];
        for (int i = 0; i < arr.length; i++) {
            if (maxGradeStudent.getAllGradeSum() < arr[i].getAllGradeSum())
                maxGradeStudent = arr[i];
        }
        return maxGradeStudent;
    }

    public static void printAllStudentGrade() {
        for (int i = 0; i < arr.length; i++) {
            System.out.println("姓名为" + arr[i].getName() + "的同学, 总分为: " + arr[i].getAllGradeSum() + "分");
        }
    }

    public static void printStudentInfo() {
        for (int i = 0; i < arr.length; i++) {
            System.out.println(arr[i].toString());
        }
    }

    public static void getStudnetsArray() {
        for (int i = 0; i < arr.length; i++) {
            arr[i] = StudentFactory.studentFactory();
        }
    }
}
